home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48_2
/
fade_dm
< prev
next >
Wrap
Internet Message Format
|
1995-03-31
|
19KB
From: Detlef Mueller <detlef@mwhh.hanse.de>
Subject: v04i011: fade_dm - Amazing screen fader v1.1, Part01/01
Newsgroups: comp.sources.hp48
Keywords: HP48 PICT ADISP grob demo
Organization: Nothin' is organized here.
Followup-To: comp.sys.hp48
Summary: Amazing
Approved: spell@seq.uncwil.edu
Checksum: 4242299209 (verify with brik -cv)
Submitted-by: Detlef Mueller <detlef@mwhh.hanse.de>
Posting-number: Volume 4, Issue 11
Archive-name: fade_dm/part01
BEGIN_DOC fade_dm.doc
Hi all.
A few days ago I found in a library a program to fade a fullsize-grob into
the PICT. Really impressed I rewrote the code. Here's the result, a little
directory filled with some programs:
SETUP
( --> )
Execute this program after the d/l.
Purges itself.
RFU
( --> )
Redundancy fighter unpacker.
Purged by SETUP.
Show
( --> )
A little demonstration program (user-RPL) to present FADE, FROW and
R2D2. It takes care about the PICT, if you interrupt the Show by
pressing [ON], you'll find your previous PICT grob in the last stack
level. To see the whole demo, only press a key if the program tells
you to do so.
Unpacked by SETUP.
MAN
( --> grob )
A grob used by Show.
Unpacked by SETUP.
FROW
( $text %row --> )
Fade ROW (sys-RPL). Feed it with a string in level 2 and a row number
in level 1 (1-7 if text display is active, 1-8 if PICT is active).
FROW fades the 1st 22 chars of the string into the active display
grob using the medium font. Row numbers > 8 wraps to 8, numbers < 1
wraps to 1. Trying to write row 8 in the text grob may be an error
condition (normally the text grob is only 56 lines hight).
Calls FADE.
FADE
( grob %flag --> )
Copy grob starting at the upper line into the active display grob
(text screen or PICT), using an amazing fading algorithm. If %flag
<> 0, every step a nibble is copied ('fast' mode). X-size of grob
<> X-size of display grob or Y-size of grob > Y-size of display grob
are error conditions.
Examine the source of FROW and Show to get some usage examples.
R2D2
( %n --> )
The 'Starwars' R2D2 captured in your handheld ... (saw the films
again yesterday :-). Try 5 R2D2.
ITYPES
( --> )
This is a program very similar to the OBJVIEW (shows an object type
reminder grob) posted by Stephen J Thomas a few days ago. When
starting with sys-RPL, I never remember the type values needed for
CKx&Dispatch/CK&DISPATCHx so I made myself a little program that
shows me all the internal types. The version I offer here contains a
modified kernel of FADE (only fade with speed 1) to run standalone.
Credits:
- RFU is a creation from Lutz Vieweg.
- I found the original version of the fade program in a library named
FACE, ID 1307. I neither know who has made it, nor if it ever was
shown up as an article in a newsgroup (I only own the nacked copy of
the lib in binary form). Anyway, thanks for the impressive program
(even it was buggy).
Have fun,
8-Detlef
END_DOC
Sources
=======
FROW - Use RPL:2.1 (with installed ref. table) to compile it.
BEGIN_SRC frow_dm.s
%%HP: T(3)A(R)F(.);
"(FROW,ob % \-> )
::
CK2NOLASTWD
DUPTYPEREAL?
NcaseTYPEERR
%1- COERCE
SEVEN #MIN
SWAP
DUPTYPECSTR? ?SKIP
DECOMP$
COERCE$22
DUPLEN$ TWENTYTWO
SWAP#- Blank$ &$
$>GROB SWAP
HARDBUFF TOTEMPOB
UNROT 3PICK SWAP #8*
PTR 12B6C OVER #8+
#< caseSIZEERR
ZEROSWAP GROB!
%1 ID FADE
;"
END_SRC
R2D2 - Use RPL:2.1 (with installed ref. table) to compile it.
BEGIN_SRC r2d2_dm.s
%%HP: T(3)A(R)F(.);
"(R2D2: % \-> )
::
CK1NOLASTWD
DUPTYPEREAL?
NcaseTYPEERR
FIFTYSIX TestSysFlag
DUP IT
::
FIFTYSIX ClrSysFlag
;
SWAP COERCE
ZERO_DO
%RAN %100 %*
COERCE #1+
%RAN
# BB8 UNCOERCE %*
COERCE # 3E8 #+
setbeep
?ATTNQUIT
LOOP
IT
::
FIFTYSIX SetSysFlag
;
; "
END_SRC
FADE - Use the sys-RPL toolkit from HP (TOOLS.EXE) to compile it:
BEGIN_SRC fade_dm.s
ASSEMBLE
HARDBUFF_y EQU #12B6C
HARDBUFF_x EQU #12B58
RPL
::
CK2NOLASTWD
CK&DISPATCH1
# C1 ( --> grob %flag )
::
%ABSCOERCE ( --> grob # )
OVER GROBDIM ( --> grob # #y #x )
HARDBUFF_x #<> SWAP ( --> grob # f #y )
HARDBUFF_y #> OR ( --> grob # f )
caseSIZEERR
OVER LENHXS TEN #-SWAP ( --> grob #len # )
CODE ( grob #len #f --> )
* CPU A B C D D0 D1 Rx
GOSBVL =POP# f
D=0 S [S]:0
?A=0 A
GOYES IsSlow
D=D+1 S [S]:1
IsSlow GOSBVL =POP# len
R1=A 1:len
GOSBVL =PopASavptr &grob
A=A+CON A,10 skip p/l
A=A+CON A,10 skip y/x
R2=A 2:&src
D1=(5) =VDISP &&disp
C=DAT1 A &disp
C=C+CON A,10 skip p/l
C=C+CON A,10 skip y/x
R0=C 0:&dst
LC(5) #03FFF #03FFF
?D=0 S
GOYES SlowMsk
LC(4) #0FFF #00FFF
SlowMsk D=C A mask
C=0 A 0
R3=C 3:0
R4=C 4:0
LC(2) #01 #01
?D=0 S
GOYES SlowBit
LC(1) #F #0F
SlowBit B=C B bitMask
C=0 A
GOSUB CopyBit
FadeLp C=R4.F A offs
A=C A offs
C=C+C A
C=C+C A
C=C+A A
C=C+CON A,3
C=C&D A ((offs*5)+3) & mask
R4=C.F A 4:offs'
R3=C.F A 3:offs'
?D#0 S
GOYES NoShft
CSRB.F A
CSRB.F A offs'/4
R3=C.F A 3:offs'/4
SB=0
BSRB.F B bitMask>>1
?SB=0 *** Shifted out ?
GOYES NoShft
LC(2) #08
B=C B
NoShft C=R3.F A offs'
A=R1.F A len
?C>=A A
GOYES OutOR
GOSUB CopyBit
OutOR A=R4.F A offs
?A#0 A
GOYES FadeLp
GOVLNG =GETPTRLOOP
* CPU xxx bitMask offs xxx
* R0:&dst
* R2:&src
CopyBit RSTK=C r:offs
A=R2.F A &src
C=C+A A &from
D1=C &from
A=DAT1 B byte
A=A&B B *** Mask bit(s) from src
C=RSTK offs
D1=A dta
A=R0.F A &dst
A=A+C A &to
AD1EX dta &to
C=DAT1 B *** Get destination byte
B=-B-1 B ~bitMask
C=C&B B *** Mask bit(s) in dst
C=C!A B *** Or in bit(s) from src
B=-B-1 B ~bitMask
DAT1=C B *** Write new byte
RTN
ENDCODE
;
;
END_SRC
BEGIN_ASC fade.asc
%%HP: T(3)A(D)F(.);
"69A20FF7A5A10000006094459505543560C2A20D5500256427D8004ED9D2051A
81536217566079E60C8142FE971585B21E4D3032230C6B2138D3057B30B49168
813061650350400ED30CCD201D0008F146601018FC1523818F09508C1021FB55
07147818F2C804172910834FFF00D7D210B30FAE5D27F3081AF1BDAC6C6C203C
A20EF781AF0BE82D18BA60721B8F238ACAC8D34150062297112C213514B0E600
713186410CA13314FBED0E650E6ABED14D01B2130E1B20F770083000380F100F
059785D380FA2100773766029A02D5114D01A5511105BA0A444263487372207F
406C92BED1514405D40A4845213485733059402D99480F7CFF3EFD10048FC420
117BF02EF8EC1302D2000C8600003CDC18B3220077C4A334DE500028A0008024
510A088005145921258E090EAD418B1440073CC80D4E450A8807495A3C522004
1459C329450EE1255D18BBC8271C4A6EF5A83400E8098081E4C18A3C22027443
F14D2010888AD0824A208A0288051445534BD800488BA0824EA18B1244073443
121A400288A81269C502280A761701028BA80814AC10A0C85C9C583852025785
0E312983A2578B3263037C5D12AC4401A8210080A652883C2C90D2E4888872A1
AE528B1222033C8891A21440C1F7A52D2016E811E08038FE8E2528B0E63031C5
D15EFE70E0907093A2A10B3CA606705FE4410A8A808A0A2A934722AA011441F1
A17830E8B868A142A18B12E6013C8CD11105088A84E0A1A78B0578CDC30E8A37
090AEA18B0CAA06F7F2D905C6040B2389341008B3CE60379A85440A88A0090E3
000787855E4E440E0190091410009184F5E287440A02978018822D1684C60A81
138B0E13280E0F1BC5F078D068A238B366E08B32A1077C55126F1880A8AA00A0
AAA08A02A2011448CC67C81683118B18437C712A1032B340A22880AA210C02FE
CE144A18B3435B0EA1071C512F02870BC0C04810C2C230E8F6056F14859E04B2
130027500402523442340D9D202BA819612664B36A8B464873588130CB916D9D
20A8B4616735B213032230AEC813C3702CFA21F514CB9A2AEC81FED302CFA211
9208BB00FBD81CB9A2AEC81119208E300CBD302B141E342443370CB916D9D20A
8B4613735B2130B2130AC000406414445440D9D20D8A812BF81119201C000D9D
207DC812C2308750585B21E4D3032230C6B2138D3057B3050B362C2306165035
04021E26CCD20F21008F14660AC38A850B478F146601018FC1523818F09818F0
91021FB5507147818F29818F2910834FFF3094B8033FFF0D7D210B10C311094B
5030FAE5D2747081AF1CDAC6C6C2818F220EF781AF0C81AF0B94F62819F2819F
281AF0B82281961832903180AE581AF1B81AF118BA60721081AF148AC598D341
500681AF12C213514B0E600713181AF10CA13314FBED0E650E6ABED14D01B213
0B2130EA100406425F47540D9D20D8A819612664B3667205AEC8153040AB4263
223045126A217031B5107721BB726BC04049726676543915000D113223053621
75660CAF06EF1163223047626C6B212C230AB5264EC3050B36A3E26976119C2A
284E204064144454B2130AC00030D414E430C2A20FB7002564249800182CE1B2
0F880004000380000EFF308F70C789FBF615E08FF3000CFF7008FF73485E7850
8F033F11C0440E680C30E78DD19ED1248117CC04FFD83AE86841E24036740F10
F3C1B23B609CDEF08F3C55B2B6C80349005A8A0CF1C9A57A016828300F30F1F4
75919086CF00124CF00F3870EF10F81FF2B08847710F1E1FF008F8497678F10E
034034F830F87C3038F7CFD821248F092E70F48F28BFF1C0793D416C1012FD7E
02D7C00066272F0E708FF01CE83D07C3C91876F02F0CF108464F137EF831BFFF
FEEF35573E30F36B443321CFCC5CA12D6087943CF0893016F8F4DEFF36CF81CA
5760EF3E38F38CB70F09FF3104EBE7AF5E300F0F0F748C32FEC4FD1000A300D2
D8F1DE603EE1912EB10000F4898D14882496CFC04A1CCAF38800C9F838F55797
C4834423C2F121843108F287E8300D0F10CFF7074DFB000EF08208FEB4943D8A
1E3343EF4CE3008FF38100F126A48B953C7129E138300AFF7870C4F1AF78553E
8096CCBC5F2FF830C004DF774CE03F444323839F100FB115B98DFF14E898CC00
707B7842F106273FFF85ED99C134ADE8B1007CFFF007484FFFB14C839124A745
E7007879C598F7EFFD639DDB8806D7F95200070FF300320BFF3079162D0CFF30
F75F300E04F008E6878070751CAE01CF0F27600E10000CEEF0016662255E0E84
0691831700030000F9872C0C0EAE1370EFF100059442600E5A10B06A517E618C
B7E7AB7000CF0477838BF600A41E942032000FFBED1CF9EF3351FF960B1FCBB9
70F88A77B40C00537CA1EF44C4E0B52A34403207084A34C18C1293006BF8F76A
3B30FF7078F1EE46C388C8300B83E06691946D3211CF98386E836E8F0C3E4064
654F1173001FF778D66C93E0FFF56CAF4399E08F080F256E83E1CF74F5C8A0E7
8397074CB45C83E300032D274881BD004210033CF71988C97C700FD284018E42
7868701D63E18EC8CA3F0FFF1E3CA11785368FF00062F006E0F5EC307A84BF79
9E010DC0F02A7478F714D432E781B10F7B4006BC8F7000046E7C1B55DC3837CC
1E7A6F916E81F1855E00E85D68F91D4F8D3A2BA80C8F300051460F324FFDD06C
F6443ADA8C0D4403046E76CFF5CED30109765A9E8008BD8F1000F856E3060AE8
7697E98321AB272EC8406D73CC4E00081BA7D5FEAA72F3C004ACF0000F7A460F
F7EF3561FE4DFD1C5808709AF3E768FFFDFC29385418700CF0F5E784B71A66C7
00EFBC81F3D811FF38FF193E5A20FFB47E100004555844B3CFFFF00D8150FFA3
7E00FFF1020C0448CD648FB1250F3AE5E0EFFFF6CF34A2FDF21CF82890F7C456
E250CF30CE58E41AEA248BCA27916873C900078C30B2CF488A40FF5F96273923
EF701F20588A70F741A2C77A8040C2308BA2A701EC700403586F67740C2A2071
700256426B8008FD9D20E1632634E104B02275E178BF1984EDCC0247A20E4A20
510C000E0910EB21300F2E11C432D6E2010169B8DC2A2072000020C975275637
370216E69702B6569752072E99B8C54E6A6FEC440283D2445647C656667B20F2
00016C6C677169BA91775115C36F6D65602A3D292E6498D94A97F65702C696BE
87D8236275646964B3A12757658DA46D55375602478C4EE0727F6762716D6640
7CA307F0E9464656D6F6E63747164794310322A0216D616A796E676023719DB5
6E602661646562F23C9792E7540FEE847F2D1F9C2A2C53A20A132D6E20108724
021184E20406425F475C42324B2A2F17A18DBF1592C139412C06144454E6CE12
C6F6F6B602164702C444F1EA81D65790139CB3EC56477237024716B4444166C2
55000031E0B76B48084EE50416E63697C2568602F3D45762E6F677C29681A48D
F9A0727F6762716DCACC46758675DB2897F657021627560237565696E67E43C7
7A76020284566070972514AEE29C2A2C53A20A132D6E20108748F484E204083F
6C42323F2A2F17A1324B4130D414E45BF2991444543A4C160183530118345E40
2023706782460203F1420F2EBB72A94023616C6C602D6440277964786EB41FF5
24F4B6C25635C8369B94E970266F6270297F657C41E540B80D45F6F602661637
4702F3217335758616470247865602865735FF102F33F2A2743A20A132D6E201
087800D84E20406425F475C4232A9A4F17A174D630D414E44B2A25A5EEEB2647
23425234423B58816020C075213000206BBF944595055435020727F6762716D6
F1A16E56E646C202C65647723153616B826F311602C6F6F6B68550D200002027
556C6C6C236F6D696E6760247F021B3A865918450000C403BEE009C020266163
74702265666F6275602B3D292C782FEB314F6417716491602698AD364716C602
37FB9D5E82DE45667562702328740730840543839C2A2743A20A132D6E201087
24E384E20406425F475C42323F2A2F17A1461D411657B28914445478048A6094
4595055435EF5323CE22606E178BF18B9C176BA1E4A205100340301B279E1AFE
22D9D208DBF1634E1EFE02B21305BF1D81E8DCCC065DF22C2A20F2250E014656
47C6566604D6778686E28616E63756E1919897C2428030A3249756C754950000
482C789056046C696476DE42F08D6F6E6C1CD084F607560297F6570256E6A6F6
975646024786563F2A2743A20A132D6E20108780080984E20406425F475C4232
ED2A24A5A193632B21302827003025645530D9D202BA81CCD20562008FB97608
FE31608F2D76014713514334C2A208A66217414334F00008B241174143342564
28A2606CF11748F60860143174E256068D1818FA945F13706D6068F8DA601F97
5071471351361451350781AF0A0781AF0B741084A8F2D760142164808C81AF1B
134AB3A2F53132007AA714EAE7161A6746063903140791196C6531507C01968D
031F1A6A6F3031E514A1590160170A6E5FE81AF1234F5000EA4118A80081AF02
658F6EF0AE8A6D14E15D0160170A6D5FE81AF1AE24AD8AA0081AF0A312079809
6C0131407C7081860781860381AF003170726013681AF0B81A618AE5E4137135
E2134A6D14E15D0160170A6D5FE81AF1A81AF10E24A18AA0081AF0A81AF1B134
65CE6E30AE5D0A64A2F53132007AA714EAE7161A67550B64A6D59D0134BBF406
A00347AC810684A8F2D76001B21303820050355445550550D9D20C2A20981002
56421C100280ED9D20E1632C2A20F20003556474796E67602570702478656024
656D6F6F1A09C2A2485A1C943243CC269100055E6071636B6681392CF1B0BC17
6BA1ED61401178BF104B0284E2030256455DBBF1DCC0293632B21304563D29C4
03586F677976327C5EB3A1540430D414E496504C6094459505543589D5408937
63D400045F60237565602478049F1C656D6F6C202869647A08B4A725E3D7202B
65697F19C6C3547A205006503554455505F08E7F86EFE02ED2A2F17A19363264
00E84E2030256455EB3A1B213076EF"
END_ASC
The FADE directory in uuencoded form, chksum/bytes #FE67h/3597
BYTES: #FE67h 3605.5
BEGIN_UU fade_dm.uue
begin 644 fade.dir
M2%!(4#0X+466*O!_6AH````&25194$53!BPJT%4`4D9RC0#DG2U0H1@U)G%E&
M!I=NP!@D[WE16"OAU`,C,L"V$H,]4+<#2QF&&`,65C`%!.`]P-P"T0"`'V0&I
M`8'/43(8^)`%R`$2OU5P08>!+XQ`<9(!./3_`'TM`3OPZM5R/X"A']O*QL8"`
MPRK@?QCZL([2@:L&)['X,JBLC#T4!6`B>1'"$E-!"VX`%Q-H%,`:,T&_WN!6K
MX*;K'=00*S'@L0)_!X`#`(/P`?!0>5@]"*\2`'=S9B"I(%T1U!!:%1%0JZ!$%
M)#:$-R<"]P3&*>L=%4103:"$5!)#6#<#E032F83PQ__CWP%`^$P"$;</XH_.)
M,2`M`,!H``##S8$[(@!W3#I#[04`@@H`"$(5H(`(4$&5$E+HD.#:%+A!!'##R
MC-#D5*"(<)2EPR4"0$&5/))4X!Y2U8&[C'+!I.9?BD,`CI`(&$X<J,,B($<TS
M']0"`8BH#2BD`J@@B%!!5#6TC0"$N`HHY!JX(41P0S0AH00@B(HAEEP@@J!G3
M<1`@N(J`0<H!"HS%R86#)2!U6.`3DC@J=;@C-C#'U2'*1!"*$@`(:B6(P\().
M+4Z(B"<:ZB6X(2(PPX@9*D$$'']:T@)ACA$."(/OZ%*""VX#$UP=Y>\'#@D'[
M.2H:L,-J8`?U3A2@J`BHH*(Y="*J$$$4'QJ'`XZ+AAHD&K@A;A##R!T14("HC
M2`X:>KA0A]P\X*ASD*"N@0NL"O;WT@G%!@0K@SD4`+C#;C"7BD4$BJ@`"3X`O
M<'A8Y>1$X!`)D$$!`!E(7RYX1*`@>0B!*-)A2&R@&XX#&"X/"Q7`^'#88J3
M@SMF#K@C&G#'52'V@0B*J@`*J@JH("H0083,=HQA.!&X@33'%Z(!(SL$*H((M
MJA+`(._L0:2!.S2UX!IPP17R('BP#`R$`2PL`XYO4/9!6.E`*S$`<@5`("5#:
M)$/0V0*RBI$68D8[IKADA#>%&`.\&=;9`HI+%G93*S$P(@/JC#$\!\*O$E]!R
MO*FBSACO/2#\*A$I@+L`OXW!FRKJC!&1`N@#P-L#LD'A0T(T<\";89TMH+ADQ
M,3>U$@,K,:`,``1&041%!)TMT*@8LH\1D0+!`-#9`M>,(2P#>`6%M1)./3`BQ
M`VPK,=@#=3M0L&/",F!A!5-`(.%BS"WP$@#X06:@/*A8L'3X0680$/@<)8.!Y
M#XF!#QD@\5L%%W08^)(8^)(!./3_`TF+,//_T-<2L`$\$9"T!0.O7BU'!QCZT
MP:UL;"P8^"+@?QCZP!CZL$EO@I$O&/F"H0^+(AAI@2,)$PCJA:$?BZ$?@:L&X
M)P$8^D&H7(D]%`5@&/HA+#$5M.`&<#&!H1_`&C-!O][@5N"FZQW4$"LQL!(#]
MK@%`8"3U=$70V0*-BI$68D8[9B=0ZHQ1`P2Z)#8B`U0AIA('$UL!=Q*[)[8,Y
M!)0G9F=%DU$`T!$C,E!C$E=FP/I@_A$V(@-T)L:V$L(RH%MBY#Q0L&,Z+I9G[
M$<FB@N0"!$9!1$4K,:`,``--04X#+"KP>P!21D*)`('"'BOPB`!``#`(`.#_.
M`_@'?)B_;U$.^#\`P/\'@/\WA.6'!?@P\Q$,1."&P`-^V!WI'4(8<<Q`_XVC8
MCH84+@1C1_`!/QPKLP;)[0_XPU4K:XPPE`"EJ,`?G%JG$(:"`_`#'T]7&0EH4
M_``AQ`_P@P?^`8_Q+PN(=!?PX?$/@(^49X<?X#`$0X\#C\<#@W_\C1)"^)#B$
M!T_X@OL?#)?3%,8!(=_G('T,`&9R\N`'^`_!CM-P/)R!9P_RP!^`9/0QYX\3R
M^__O_E-UXP,_MD0S$OS,Q1K2!GA)PP^8`V&/3^W_8_P8K'4&_N.#/\A[\)#_Z
M$T"^?OKE`_#P\$?((^],WP$`.@`MC1_M!N,>&>(;``!/F-A!B$)I_`RDP:P_/
MB`"<CX-?=7E,.$0R+!\22!.`+WB.`]#P`?Q_<-2_`.`/*(#O2TG3J.$S-/[$1
M/@#X/Q@`'V)*N%G#%Y(>@P.@_X<'3!_ZAU7C"&G,R_7RCP,,0/UWQ`[S1#0RP
M./D!\!M1F]C_08Z)S``'MX<D'V!R\_]8WID<0]J.&P#'_P]PA/3_&\0X&4)ZV
M5'X`AY=<B7_^WS;9O8A@?9\E`'#P/P`CL/\#EV'2P/\#?_4#X$`/@&YX"`=7Q
MP>H0_/!R!N`!`,#N#Q!F)E+EX$A@&3AQ`#```)]XPL#@ZC$'_A\`4$DD!N"E/
M`0NF%><6R'M^N@<`_$!W.+AO`$KA20(C`/"_WL&?_C,5_VFP\;R;!X^H=TO`Q
M`#7'&OY$3`Y;HD,$(W"`I$,<R"$Y`+:/?Z:S`_\'AQ_N9#R(C`.P.`YF&4G6S
M(Q'\B8/F..;XP.,$1E;T$3<`\7^';<8Y#O]?QOHTF0[X@/!2YC@>_$=?C`I^8
M.'EPQ$O%.#X`,-)RA!C;`"0!,,-_D8B<QP?P+4@0Z"2'A@?1-A[HC*SS\/_A5
MPQIQ6&/X#P`F#V`.7\X#ITC[E^D0T`P/HD>'?T%-(WX8&_"W!+^`<`0.;'C
ML57-@W/,X:?V&>88'UCE`([5AI_1]-BCLHK`^`,`%63P(_3?#<9O1*.MR-!$X
M,$#F9_Q?[#T0D&>EZ0B`V_@!`(]E/F"@CF=YGC@2NG+BC`36-\SD`("Q>EWO`
MJB<_#$#*#P#PIV3P?_Y3%N_4W\&%@`>I/WZ&_]_/DH-%@0?`#U]^2'NA9GP`@
M_LL8/XT1_X/_D>.E`O]+YP$`0%6%1#O\_P_0&`7_.N<`_Q\@P$"$W$;X&U+P$
MHUX._O]O_$,JWR_!CX()?TQE+@7\`^R%3J&N0KBL<AF&-YP`<,@#*_R$J`3_&
M]6ERDS+^!_$"A:@'?Q0J?*<(!"P#N"IZ$,X'0#"%]G9'P*("%P<@922V"(#?3
MV0(>-F)#'D`+(E<>A_N12-[,('0JX*0"%<``X)`!OA(#\.(13"-M+A`0EHO-?
MH@(G```"G%=R97-S(&%N>2!K97DE<.*9BUSDIO;.1"`X+41E=&QE9K<"+P`0\
MQL9V%Y:K&7<543SVUE8&HM.2XD:)G:1Y;W4@;&GK>(TR)E=&ED8[&G)U5MA*.
MUE5S92!TR.0.)_=V)A?69@3'.G`/GF1D96UO;G-T871)$S`B"A+6%J:7YG8&-
M,A?96^8&8A9&5B8OPWDI?D7P[DCWTO')HL(U*J`QTN8"`7A"(!%(+D!@)/5T*
MQ20CM*+R<1K8^U$I'),4PF!!1$5N["%L;V]K(&%T($Q$'ZX8;74),<D[SF5T2
M)W,@=&%+1!1F+%4``!,.>[:$@.1>0&%N8WDL96@@/TUU)FYO=RQI&$K8GPHGR
M]W8F%]:LS&17:%>]@GEO=2!A<F4@<V5E:6[G-'RG9R`@2&4&!WE20>HNR:+"K
M-2J@,=+F`@%XA$](+D"`\\8D(_.B\G$:([04`TU!3K4OF4%$1:/$81`X-1"!\
M0^4$`C('=BAD(#`?)/#BNR>:!#(6QL8&TD8$<I=&A^9+\5]"3VLL95.,8[E)1
MG@=B]B8'DO=6QQ1>!(O05&]O(&9A<W0@/Q(W4U=H870@=&AE(&AU4_\!\C,O8
M*D>C`AHC;2X0@(<`C>0"!$923U=,,J*I]'$:1VT#34%.M*)26NZ^8G0R)"5#]
M)+.%&`8"#%<2`P`"MOM)5%E015,@<')O9W)A;1\:YF5N9"P@;&5T)Q,U%K8H;
M]A-A(&QO;VM8!2T```)R5<;&QC+VUI;F=@9"]R"QHVB5@50``$PPZPZ0#`)BR
M%C9'!R)69O8F5P:RTY+"A_*^$_1&<1=&&09BB=IC=&%L('._V>4H[51F5R8'&
M,H)'<`-(4#0XR:)R-"J@,=+F`@%X0CY(+D!@)/5TQ20C\Z+R<1IDT11A=2N8?
M041%AT"H!DE465!%4_XU,NPB!N9QN!^XR7&V&DXJ4`$P!`.Q<NFA[R*=+8"]2
M'S;DX>\@*S%0^]$8CLW,8-4OPJ("+U+@$&1E=&QE9D!M=VAH+FAA;G-E'AF);
M>2PD"`,Z0GEE?$59``"$PH<)94#&ED9G[20/V/;FQL$-2&]P92!Y;W4@96YJ"
M;WEE9"!T:&7SHG(T*J`QTN8"`7@(@)!(+D!@)/5TQ20CWJ)"6AHY-K(2`X)RC
M``-21E4#G2T@JQC,+5`F`/B;9X#O$P;XTF<0=#$5-$,L*H!J)G$4-$,/`(`KK
M%'$4-$-21H(J!L8?<81O@`9!$T<N96#8@8&O2?4Q!]8&AH^M!O%Y!1=T,15CV
M0153<!CZH'`8^K!'`4B*+WT&01)&",@8^K$QI#LJ7Q,C`*=Z0:Y^8:%V9&"3G
M,$%P&9'&5A,%QQ!IV##QH:;V`Q->01J5$`9QH.;UCJ$?,O0%`*X4@8H`&/H@G
M5OCF#^JHUD$>U1`&<:#6]8ZA'^I"VJ@*@*$/.B%PB9#&$!,$QP<8:'`8:#`8>
M^@`3!R<&,8:A#XNA%JA>3C$74RXQI-9!'M40!G&@UO6.H1^*H1_@0AJH"H"A$
M#XJA'QM#5NSF`^K5H$8J7Q,C`*=Z0:Y^8:%V5;!&:EW9$$.[3V`*,'3*&&!(+
MBB]]!A`K,3`H``5315154`6=+<"B`HD!(&4DP0$@"-[9`AXVPJ("+P`P549'9
ME^9V!E('!T*'5@9"5M;V]J&0+"J$I<%)(S3,8AD`4.4&%S:V9AB3PA\+RW&V"
M&MX6!!&'^P&T($@N,"!E5-6['\T,DF,C*S%`9=.23#"%]G:79R/'Y3L:14`#:
M34%.:07$!DE465!%4YA=!)AS-DT`0/4&,E=6!D*'0/G!5M;VQ@*"ED:G@$MZ[
M4CY]`K)6EO>1;#Q%IP(%8`5315154`_H]VC^#N(M*A^GD6,C1@".Y`(#4D959
%OJ.Q$@.Q[
``
end
END_UU
--
+-----------------------------------+---------------------------------------+
| `What a depressingly | Detlef Mueller |
| stupid machine` | detlef@mwhh.hanse.de |
| Marvin |...!uunet!mcsun!unido!mcshh!mwhh!detlef|
+-----------------------------------+---------------------------------------+